package com.xd.core.bill.service;

import com.github.pagehelper.Page;
import com.xd.core.bill.dto.BillQuery;
import com.xd.core.bill.dto.EarlyRepaymentQuery;
import com.xd.core.bill.dto.ReceivePaymentQuery;
import com.xd.core.bill.vo.*;
import com.xd.core.debt.dto.DebtOneDto;

public interface IBillService {

    /**
     * @description: 分页查询账单
     * @author: ZCH
     * @date: 2025/3/3 0003 14:03
     * @param: [billQuery]
     * @return: com.github.pagehelper.Page<com.xd.core.bill.vo.BillPageVo>
     **/
    Page<BillPageVo> getBillList(BillQuery billQuery);

    /**
     * @description: 应收账款列表
     * @author: ZCH
     * @date: 2025/3/3 0003 16:01
     * @param: [billQuery]
     * @return: com.github.pagehelper.Page<com.xd.core.bill.vo.ReceivePaymentPageVo>
     **/
    Page<ReceivePaymentPageVo> getReceivePaymentList(ReceivePaymentQuery query);

    /**
     * @description: 提前还款列表
     * @author: ZCH
     * @date: 2025/3/3 0003 18:06
     * @param: [query]
     * @return: com.github.pagehelper.Page<com.xd.core.bill.vo.EarlyRepaymentPageVo>
     **/
    Page<EarlyRepaymentPageVo> getEarlyRepaymentList(EarlyRepaymentQuery query);

    /**
     * @description: 账单列表导出
     * @author: ZCH
     * @date: 2025/3/24 0024 13:39
     * @param: [query, id]
     * @return: void
     **/
    void exportBillList(BillQuery query, Integer id);

    /**
     * @description: 应收账款列表导出
     * @author: ZCH
     * @date: 2025/3/24 0024 15:36
     * @param: [query, id]
     * @return: void
     **/
    void exportReceivePaymentList(ReceivePaymentQuery query, Integer id);

    /**
     * @description: 提前还款列表导出
     * @author: ZCH
     * @date: 2025/3/24 0024 16:20
     * @param: [query, id]
     * @return: void
     **/
    void exportEarlyRepaymentList(EarlyRepaymentQuery query, Integer id);

    /**
     * @description: 获取账单详情
     * @author: ZCH
     * @date: 2025/3/31 0031 18:14
     * @param: [id]
     * @return: com.xd.core.bill.vo.BillDetailVo
     **/
    BillDetailVo getBillDetail(Integer id);

    /**
     * @description: 提前还款详情
     * @author: ZCH
     * @date: 2025/4/1 0001 11:18
     * @param: [id]
     * @return: com.xd.core.bill.vo.EarlyRepaymentDetailVo
     **/
    EarlyRepaymentDetailVo getEarlyRepaymentDetail(DebtOneDto debtOneDto);
}
